1. Field of the Invention
The present invention relates to information handling systems for managing data. More particularly, the present invention relates to data management in clients in a distributed file system. Still more particularly, the present invention relates to caching and logging in distributed file system clients which may support connected or disconnected client operation.
2. Background and Related Art
Computer workstations have increased in power and storage capacity. Workstations were originally used by a single operator to perform one or more isolated tasks. The increased deployment of workstations to many users in an organization has created a need to communicate between workstations and share data between users. This has led to the development of distributed file system architectures such as that shown in FIG. 1.
A number of workstations in FIG. 1 are interconnected by a local area network (LAN). A wide area network (WAN) may be used to interconnect a number of local LANS. The LANs and WANs form a single logical network. Workstations in FIG. 1 are identified as servers S1, S2, S3 and clients C1, C2, C3. The designation of a workstation as a client or server depends upon the function executed by the specific workstation in the network. A particular workstation may be both a client and a server. Implementation of a distributed file system requires the presence of at least one server and at least one client.
Client workstations have traditionally been connected to the LAN at all times to receive the services of the LAN and to share resources such as files. Disconnection from the LAN meant the workstation was cutoff from the LAN resources. Work could be continued on the detached client only if the necessary files and programs had been copied to the client before disconnection.
The increased power of portable workstations has made detached or "mobile" computing practical. Portable workstations can be purchased with processor, memory and disk storage capacities equal to those of desktop or deskside units. Portable workstations or portable computers, however, currently have the same limitation when detached: no shared resource can be used unless a copy of that file or program was made prior to disconnection. When the workstation is reconnected it is left to the user to manually reconcile the files changed on the portable device with those on the network. FIG. 1 illustrates a disconnectable portable workstation as client C1 102 connected by a dashed line to the network.
The sharing of data files across a network such as that shown in FIG. 1 has evolved over time. The simplest form of sharing allows a client to request data from a file on the server. The necessary data is sent to the client processor and any changes or modifications to the data are returned to the server. Appropriate locks are created so that a second client does not change the data in a file held by the first client.
Distributed file systems enhance file sharing by adding mechanisms to more effectively distribute data to clients and to more effectively control sharing of files. Many distributed file systems exist. One popular distributed file system is the Andrew File System (AFS) distributed by Transarc Corp.
AFS improves distributed file processing efficiency by creating a file cache in a client that is accessing server data. This cache is referenced by client applications and only a cache miss causes data to be fetched from the server. Caching of data reduces network traffic and speeds response time at the client.
AFS cache consistency is based on a server callback system. The server will notify each client that has certain data cached of any condition that renders the client's cached data invalid. Once invalid, the data is purged from the cache and must be reacquired from the server when it is needed.
Disconnection of a workstation connected to AFS will cause loss of distributed file access by the client. The client will automatically drop all callbacks when disconnected causing the cache to be invalidated.
The Distributed File System (DFS) is a follow-on to AFS that supports the OSF Distributed Computing Environment(DCE). DFS uses a server-based token mechanism to ensure client cache consistency. Clients acquire "read" tokens to ensure the data in their cache is valid. If a client is to change data in a file, it acquires a "write" token for the data. Granting a "write" token to one client, e.g. C1, invalidates "read" tokens for the same data in all other clients. The token invalidation renders the cached data in these clients invalid. Disconnection from a DFS system will cause the client to lose any outstanding tokens. The client will be unable to read or write even to cached data due to the lack of tokens.
Carnegie Mellon University has undertaken an effort to provide support for detachable workstations connected to an AFS network. The CODA project is directed at providing a distributed file system with constant data availability. It accomplishes this by replicating data in multiple servers and providing support for disconnected operations by clients. See "Coda: A highly Available File System for a Distributed Workstation Environment," IEEE Transactions, Vol. 39, No. 4, April 1990.
Distributed operation in Coda is accomplished by optimistic replica control of data. Optimistic control allows many clients to read and write data, even if disconnected. Data inconsistencies are left to be identified and resolved later. Pessimistic replica control avoids all conflicts by restricting reads and writes to a single partition. Disconnection removes from the client the ability to determine whether another client has access to data. Under pessimistic replica control, the client would be unable to write. See "Disconnected Operation in the Coda File System," J. Kistler, M Satyanarayanan, Carnegie Mellon University, Proceedings of the 13th ACM Symposium on Operating Systems Principles, October 1991.
Coda distributed operation allows the client to continue to access and update data held in the client side cache. File operations fail only when a cache miss occurs since the only then is the client unable to access the data from the server. AFS and Coda cache entire files. Coda updates the file during disconnected operations and maintains a log of all changes to the data. Upon reconnection the client is responsible for updating all server replicas of the data by applying the logged transactions to the server files. Data inconsistencies are handled by deferring resolution for manual intervention.
Coda has a major disadvantage that only connection to a Coda server is supported. Coda, like AFS, is a distributed file system protocol. Coda relies on the fact that the server or servers and all clients are using the same distributed file system protocol. The requires that all clients and servers in the network be changed to the Coda protocol to support disconnected operation.
A second approach has been suggested by Huston and Honeyman in "Disconnected Operation for AFS," L. B. Huston and P. Honeyman, Center for Information Technology Integration, The University of Michigan, published in the Proceedings of the USENIX Mobile and Location-Independent Computing Symposium, August, 1993. Huston and Honeyman propose a client system that can connect to a standard AFS server without modification to the server. Client code modifications support disconnected operation and reconnection. Reconnection and reconciliation is accomplished by logging every transaction while disconnected. Every read, write or update is recorded in a transaction log that is replayed to the server upon reconnection. This approach has the advantage of supporting a standard AFS server. It depends, however, on the presence of the AFS distributed file system protocol and does not operate with servers other than an AFS server. The total logging approach also detracts from the system efficiency. The size of the log would create client disk space problems and reconciliation delays in systems of any size.
Thus, a technical problem exists to provide a distributed file system that allows continued operation by disconnected clients with efficient reconciliation upon reconnection. A further technical problem is the creation of a distributed file system client that is usable with numerous distributed file system protocols. Finally, a technical problem exists of creating a distributed file system client that is independent of operating system syntax for object or pathname resolution.